1. Field of the Invention
This application relates to the field of reliable and efficient data networking, and more particularly to the field of variable-strength error correction and resource allocation in a noisy data networking environment.
2. Description of Related Art
Throughput of a digital data communication channel may be adversely affected by an excessive Bit Error Rate (BER) due either to the inherent characteristics of the channel or to interference caused by other users of the channel. Error correction coding schemes may improve the reliability of data transmissions by reducing the delivered bit error rate. Error correction coding allows for correction of received data. Correcting the data in this manner reduces the amount of re-transmissions, which is generally inefficient in that it includes both a request for re-transmission from the data recipient and a re-transmission by the original sender of the data. Such re-transmissions use physical bandwidth of the channels that would otherwise be available data communication.
Using error correction coding adds data overhead and thus also reduces the amount of physical bandwidth available for data transmission. Accordingly, the choice of an error correction code involves balancing expected gains of improved channel accuracy (with a corresponding reduction in re-transmitted data) against the overhead introduced by the error correction code. Note that, a particular code""s resilience to errors (i.e. the number of errors which can be corrected per a given number of bits transmitted, also sometimes referred to as a code""s xe2x80x9cstrengthxe2x80x9d) is proportional to the overhead introduced by the code. Generally, a strong code will introduce more overhead than a weak code. Thus, using a code that is too weak could cause too many re-transmissions due to too many errors in the received data while using a code that is too strong could increase overhead unacceptably.
In over-the-air transmission of TCP/IP packets, it is sometimes difficult to use an acceptable code strength due to the criticality of receiving the TCP/IP header intact. The header contains important information about the packet, including the size of the data being transmitted (i.e., the payload), the packet number (used to identify and sequence the packets) the data source, and the data destination. If a packet header is damaged, it may be difficult to request a retransmission since critical packet information may be lost. Thus, in some instances, using an error correction code that is strong enough to provide an acceptable delivered BER for the packet header may increase the overhead unacceptably when applied to the entire packet. However, using a code that is too weak could result in too many requests for retransmission, since receipt of the packet header without any errors is important.
Furthermore, in a network of digital radios, a channel is often shared by multiple terminals. Some of the applications that are being run over these terminals have quality of service requirements. For example, IP voice requires a minimum bandwidth, e.g., 16 kilobits per second, to be clearly understood by the end user. An effective way to share a common channel among multiple terminals, and still fulfill quality of service requirements, is to make use of packet scheduling algorithms. These algorithms ranks IP packets per their quality of service requirements, and schedules their transmission time accordingly. However, use of error correcting codes reduces the available physical bandwidth due to the associated overhead. In an environment where a channel is shared by multiple terminals, several applications with diverse quality of service requirements may have to be supported. Since these applications will require different levels of coding, some applications may consume more bandwidth than others. If the packets scheduling algorithm does not take into account differences in consumed bandwidth, it may unfairly favor one user over another, or, it may fail to provide the intended bandwidth to some of the users.
The invention includes efficient error correction and resource allocation over a communication channel. In once aspect, the invention includes encoding packetized data for transmission over a communication channel by encoding a header of a data packet with a first error correction code to provide an encoded header, encoding a payload of the data packet with a second error correction code to provide an encoded payload, the second error correction code being different from the first error correction code, and combining the encoded header and the encoded payload to provide an encoded data packet. In another aspect of the invention, the overhead resulting from the use of error correcting codes is used as an additional input parameter to the packet scheduling algorithm. As a result, bandwidth allocation will be fair, and independent of fluctuations that would result from the error correcting code overhead.
According to the present invention, encoding packetized data includes encoding a header of a data packet with a first error correction code to provide an encoded header, encoding a payload of the data packet with a second error correction code to provide an encoded payload, the second error correction code being different from the first error correction code, and combining the encoded header and the encoded payload to provide an encoded data packet. encoding packetized data may also include transmitting the encoded data packet over a wireless network. The header may be a TCP/IP packet header or the packet may a UDP packet. A strength of the second error correction code may be dependent on a bit error rate of a communication channel used for transmitting the encoded data packet. The first error correction code may be a binary BCH code. The second error correction code may be a Reed-Solomon code.
According further to the present invention, decoding packetized data includes decoding a header of a data packet using a first error correction code to provide an unencoded header, decoding a header of the data packet using a second error correction code, the second error correction code being different from the first error correction code, and combining the unencoded header and the unencoded payload to provide an unencoded data packet. Decoding packetized data may also include receiving the data packet over a wireless network. The unencoded header may be a TCP/IP packet header or the packet may be a UDP packet. A strength of the second error correction code may be dependent on a bit error rate of a communication channel used to transmit the unencoded data packet. The first error correction code may be a binary BCH code. The second error correction code may be a Reed-Solomon code.
According further to the present invention, a digital data signal embodied on a wireless network carrier wave includes an encoded packet header encoded using a first error correction code and an encoded payload encoded using a second error correction code, the second error correction code different from the first error correction code. The first error correction code may be a binary BCH code. The second error correction code may be a Reed-Solomon code.
According further to the present invention, encoding voice data includes encoding a header of a data packet with an error correction code to provide an encoded header and combining the encoded header and the voice data to provide an encoded data packet. Encoding voice data may also include transmitting the encoded data packet over a wireless network. The error correction code may be a binary BCH code. The packet may be a UDP packet.
According further to the present invention, scheduling packets for service includes receiving a plurality of packets, storing the packets, and queuing each of the packets for transmission according to a time of arrival of each of the packets, a quality of service associated with each of the packet, and an amount of error correction encoding applied to each of the packets. A first error correction encoding may be applied to a header of each of the packets. At least some of the packets may be UDP packets and/or TCP/IP packets. A second error correction code, different from the first error correction code, may be applied to a payload of each of the packets.
In additional aspects, the invention may be a system or apparatus using the methods above, or a digital data signal encoded according to the methods above. In one aspect, the invention is used in connection with a node of a network. The invention may further include a buffer to queue packets for transmission, each packet being prioritized for transmission according to a bit rate error on a communication channel and a desired quality of service for the packet.